{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pytorch 支持 sklearn 的重参数搜索需要其他的库。一般的项目中设置好命令行脚本后，可以通过更改脚本参数手动实现超参数搜索"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.009051Z",
     "start_time": "2025-01-26T10:27:47.539513Z"
    }
   },
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.1\n",
      "torch 2.5.1+cpu\n",
      "cpu\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备数据"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.152108Z",
     "start_time": "2025-01-26T10:27:51.010039Z"
    }
   },
   "source": [
    "from sklearn.datasets import fetch_california_housing\n",
    "\n",
    "housing = fetch_california_housing()\n",
    "print(housing.DESCR)\n",
    "print(housing.data.shape)\n",
    "print(housing.target.shape)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _california_housing_dataset:\n",
      "\n",
      "California Housing dataset\n",
      "--------------------------\n",
      "\n",
      "**Data Set Characteristics:**\n",
      "\n",
      ":Number of Instances: 20640\n",
      "\n",
      ":Number of Attributes: 8 numeric, predictive attributes and the target\n",
      "\n",
      ":Attribute Information:\n",
      "    - MedInc        median income in block group\n",
      "    - HouseAge      median house age in block group\n",
      "    - AveRooms      average number of rooms per household\n",
      "    - AveBedrms     average number of bedrooms per household\n",
      "    - Population    block group population\n",
      "    - AveOccup      average number of household members\n",
      "    - Latitude      block group latitude\n",
      "    - Longitude     block group longitude\n",
      "\n",
      ":Missing Attribute Values: None\n",
      "\n",
      "This dataset was obtained from the StatLib repository.\n",
      "https://www.dcc.fc.up.pt/~ltorgo/Regression/cal_housing.html\n",
      "\n",
      "The target variable is the median house value for California districts,\n",
      "expressed in hundreds of thousands of dollars ($100,000).\n",
      "\n",
      "This dataset was derived from the 1990 U.S. census, using one row per census\n",
      "block group. A block group is the smallest geographical unit for which the U.S.\n",
      "Census Bureau publishes sample data (a block group typically has a population\n",
      "of 600 to 3,000 people).\n",
      "\n",
      "A household is a group of people residing within a home. Since the average\n",
      "number of rooms and bedrooms in this dataset are provided per household, these\n",
      "columns may take surprisingly large values for block groups with few households\n",
      "and many empty houses, such as vacation resorts.\n",
      "\n",
      "It can be downloaded/loaded using the\n",
      ":func:`sklearn.datasets.fetch_california_housing` function.\n",
      "\n",
      ".. rubric:: References\n",
      "\n",
      "- Pace, R. Kelley and Ronald Barry, Sparse Spatial Autoregressions,\n",
      "  Statistics and Probability Letters, 33 (1997) 291-297\n",
      "\n",
      "(20640, 8)\n",
      "(20640,)\n"
     ]
    }
   ],
   "execution_count": 2
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.157177Z",
     "start_time": "2025-01-26T10:27:51.152108Z"
    }
   },
   "source": [
    "# print(housing.data[0:5])\n",
    "import pprint  #打印的格式比较 好看\n",
    "\n",
    "pprint.pprint(housing.data[0:5])\n",
    "print('-'*50)\n",
    "pprint.pprint(housing.target[0:5])"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([[ 8.32520000e+00,  4.10000000e+01,  6.98412698e+00,\n",
      "         1.02380952e+00,  3.22000000e+02,  2.55555556e+00,\n",
      "         3.78800000e+01, -1.22230000e+02],\n",
      "       [ 8.30140000e+00,  2.10000000e+01,  6.23813708e+00,\n",
      "         9.71880492e-01,  2.40100000e+03,  2.10984183e+00,\n",
      "         3.78600000e+01, -1.22220000e+02],\n",
      "       [ 7.25740000e+00,  5.20000000e+01,  8.28813559e+00,\n",
      "         1.07344633e+00,  4.96000000e+02,  2.80225989e+00,\n",
      "         3.78500000e+01, -1.22240000e+02],\n",
      "       [ 5.64310000e+00,  5.20000000e+01,  5.81735160e+00,\n",
      "         1.07305936e+00,  5.58000000e+02,  2.54794521e+00,\n",
      "         3.78500000e+01, -1.22250000e+02],\n",
      "       [ 3.84620000e+00,  5.20000000e+01,  6.28185328e+00,\n",
      "         1.08108108e+00,  5.65000000e+02,  2.18146718e+00,\n",
      "         3.78500000e+01, -1.22250000e+02]])\n",
      "--------------------------------------------------\n",
      "array([4.526, 3.585, 3.521, 3.413, 3.422])\n"
     ]
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.201869Z",
     "start_time": "2025-01-26T10:27:51.158189Z"
    }
   },
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "#拆分训练集和测试集，random_state是随机种子,同样的随机数种子，是为了得到同样的随机值\n",
    "x_train_all, x_test, y_train_all, y_test = train_test_split(\n",
    "    housing.data, housing.target, random_state = 7)\n",
    "x_train, x_valid, y_train, y_valid = train_test_split(\n",
    "    x_train_all, y_train_all, random_state = 11)\n",
    "# 训练集\n",
    "print(x_train.shape, y_train.shape)\n",
    "# 验证集\n",
    "print(x_valid.shape, y_valid.shape)\n",
    "# 测试集\n",
    "print(x_test.shape, y_test.shape)\n",
    "\n",
    "dataset_maps = {\n",
    "    \"train\": [x_train, y_train],\n",
    "    \"valid\": [x_valid, y_valid],\n",
    "    \"test\": [x_test, y_test],\n",
    "}\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11610, 8) (11610,)\n",
      "(3870, 8) (3870,)\n",
      "(5160, 8) (5160,)\n"
     ]
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.210465Z",
     "start_time": "2025-01-26T10:27:51.203857Z"
    }
   },
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "from torch.utils.data import DataLoader\n",
    "\n",
    "\n",
    "scaler = StandardScaler()\n",
    "scaler.fit(x_train)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler()"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StandardScaler()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 构建数据集"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.219028Z",
     "start_time": "2025-01-26T10:27:51.210465Z"
    }
   },
   "source": [
    "from torch.utils.data import Dataset\n",
    "\n",
    "class HousingDataset(Dataset):\n",
    "    def __init__(self, mode='train'):\n",
    "        self.x, self.y = dataset_maps[mode]\n",
    "        self.x = torch.from_numpy(scaler.transform(self.x)).float()\n",
    "        self.y = torch.from_numpy(self.y).float().reshape(-1, 1)\n",
    "            \n",
    "    def __len__(self):\n",
    "        return len(self.x)\n",
    "    \n",
    "    def __getitem__(self, idx):\n",
    "        return self.x[idx], self.y[idx]\n",
    "    \n",
    "    \n",
    "train_ds = HousingDataset(\"train\")\n",
    "valid_ds = HousingDataset(\"valid\")\n",
    "test_ds = HousingDataset(\"test\")"
   ],
   "outputs": [],
   "execution_count": 6
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.228381Z",
     "start_time": "2025-01-26T10:27:51.220073Z"
    }
   },
   "source": [
    "train_ds[1]"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([-0.2981,  0.3523, -0.1092, -0.2506, -0.0341, -0.0060,  1.0806, -1.0611]),\n",
       " tensor([1.5140]))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 7
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.235361Z",
     "start_time": "2025-01-26T10:27:51.228381Z"
    }
   },
   "source": [
    "from torch.utils.data import DataLoader\n",
    "\n",
    "\n",
    "batch_size = 256\n",
    "train_loader = DataLoader(train_ds, batch_size=batch_size, shuffle=True)\n",
    "val_loader = DataLoader(valid_ds, batch_size=batch_size, shuffle=False)\n",
    "test_loader = DataLoader(test_ds, batch_size=batch_size, shuffle=False)"
   ],
   "outputs": [],
   "execution_count": 8
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.245436Z",
     "start_time": "2025-01-26T10:27:51.236361Z"
    }
   },
   "source": [
    "#回归模型我们只需要1个数\n",
    "\n",
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self, input_dim=8):\n",
    "        super().__init__()\n",
    "        self.linear_relu_stack = nn.Sequential(\n",
    "            nn.Linear(input_dim, 30),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(30, 1)\n",
    "            )\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # x.shape [batch size, 8]\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        # logits.shape [batch size, 1]\n",
    "        return logits"
   ],
   "outputs": [],
   "execution_count": 9
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.255022Z",
     "start_time": "2025-01-26T10:27:51.246567Z"
    }
   },
   "source": [
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        \"\"\"\n",
    "\n",
    "        Args:\n",
    "            patience (int, optional): Number of epochs with no improvement after which training will be stopped.. Defaults to 5.\n",
    "            min_delta (float, optional): Minimum change in the monitored quantity to qualify as an improvement, i.e. an absolute \n",
    "                change of less than min_delta, will count as no improvement. Defaults to 0.01.\n",
    "        \"\"\"\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.best_metric = -1\n",
    "        self.counter = 0\n",
    "        \n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:\n",
    "            # update best metric\n",
    "            self.best_metric = metric\n",
    "            # reset counter \n",
    "            self.counter = 0\n",
    "        else: \n",
    "            self.counter += 1\n",
    "            \n",
    "    @property\n",
    "    def early_stop(self):\n",
    "        return self.counter >= self.patience\n"
   ],
   "outputs": [],
   "execution_count": 10
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.265065Z",
     "start_time": "2025-01-26T10:27:51.256012Z"
    }
   },
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad()\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = []\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "        # 前向计算\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)         # 验证集损失\n",
    "        loss_list.append(loss.item())\n",
    "        \n",
    "    return np.mean(loss_list)\n"
   ],
   "outputs": [],
   "execution_count": 11
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:51.274948Z",
     "start_time": "2025-01-26T10:27:51.266102Z"
    }
   },
   "source": [
    "# 训练\n",
    "def training(\n",
    "    model, \n",
    "    train_loader, \n",
    "    val_loader, \n",
    "    epoch, \n",
    "    loss_fct, \n",
    "    optimizer, \n",
    "    tensorboard_callback=None,\n",
    "    save_ckpt_callback=None,\n",
    "    early_stop_callback=None,\n",
    "    eval_step=500,\n",
    "    ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0\n",
    "    model.train()\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            # training\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等\n",
    "                optimizer.step()\n",
    " \n",
    "                loss = loss.cpu().item()\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"step\": global_step\n",
    "                })\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()\n",
    "                    val_loss = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()\n",
    "\n",
    "                    # 早停 Early Stop\n",
    "                    if early_stop_callback is not None:\n",
    "                        early_stop_callback(-val_loss)\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict\n",
    "                    \n",
    "                # udate step\n",
    "                global_step += 1\n",
    "                pbar.update(1)\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "        \n",
    "    return record_dict\n"
   ],
   "outputs": [],
   "execution_count": 12
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:27:56.573240Z",
     "start_time": "2025-01-26T10:27:56.568872Z"
    }
   },
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=5):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    for idx, item in enumerate(train_df.columns):\n",
    "        plt.plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        plt.plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        plt.grid()\n",
    "        plt.legend()\n",
    "        # plt.xticks(range(0, train_df.index[-1], 10*sample_step), range(0, train_df.index[-1], 10*sample_step))\n",
    "        plt.xlabel(\"step\")\n",
    "\n",
    "        plt.show()\n",
    "\n",
    "# plot_learning_curves(record)  #横坐标是 steps"
   ],
   "outputs": [],
   "execution_count": 13
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": "# 网格搜索，for实现"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-26T10:30:42.529622Z",
     "start_time": "2025-01-26T10:30:17.540712Z"
    }
   },
   "source": [
    "for lr in [1e-2, 3e-2, 3e-1, 1e-3]:\n",
    "\n",
    "    epoch = 100\n",
    "\n",
    "    model = NeuralNetwork()\n",
    "\n",
    "    # 1. 定义损失函数 采用MSE损失\n",
    "    loss_fct = nn.MSELoss()\n",
    "    # 2. 定义优化器 采用SGD\n",
    "    # Optimizers specified in the torch.optim package\n",
    "    optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=0.9)\n",
    "\n",
    "    # 3. early stop\n",
    "    early_stop_callback = EarlyStopCallback(patience=10, min_delta=1e-3)\n",
    "\n",
    "    model = model.to(device)\n",
    "    record = training(\n",
    "        model, \n",
    "        train_loader, \n",
    "        val_loader, \n",
    "        epoch, \n",
    "        loss_fct, \n",
    "        optimizer, \n",
    "        early_stop_callback=early_stop_callback,\n",
    "        eval_step=len(train_loader)\n",
    "        )\n",
    "    print(\"lr: {}\".format(lr))\n",
    "    plot_learning_curves(record)\n",
    "    model.eval()\n",
    "    loss = evaluating(model, val_loader, loss_fct)\n",
    "    print(f\"loss:     {loss:.4f}\")"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "da3a20162148460f8320913d5f17b4a6"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 42 / global_step 1932\n",
      "lr: 0.01\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3419\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "4946ff2f20364007aa57a26863236cb6"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 9 / global_step 414\n",
      "lr: 0.03\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     nan\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "2233cd89c9464a9bb399290a719b7666"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 9 / global_step 414\n",
      "lr: 0.3\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     nan\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "397c9b221c93491d9219c7b20d974f29"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr: 0.001\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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I2a42G6CLAeHmxIRUZjImh1yIRt2hWierhAONyUiCj//AkU6NYViWG2k3WosOEEWEVH4SLpfFsg6dOgQatWq5V0sy4onTJk5U9bpkNEgVDQwlOMj7SjHR0aglJXtAgsHMxZERGEjK2w2bNgQe/bsCdnslBV14pQJpmSpcqsGP1Yg82jICq7lCb4i7dYVwlEhREThJSMgZLbKvLw8WJXs24IFC9QiX6drUWVpgsTIyMhyB172y1hwVAgRkSknJblYleybzFwp02kzsKhYtpsgi10hRERE5omwXVcIizeJiIhMY5vAgl0hRERE5rNNYKFF6F0hzFgQERGZxYYZCwYWREREZrFdjUUEizeJiIhOncBi7969uOmmm1CjRg010YisK798+XJYp3iTgQUREZFZgprH4tixY+jRowcuuugizJgxQ03funnzZlSrVg1mK9BrLBhYEBERnRqBxUsvvYSkpCRMmDDBe1vTpk1L/J2cnBx10aWlpXlnQQvlLG0FevKlILTbpeDox55tYC62g3WwLayB7VB+pT12Di2IJelat26N/v37qznh58+fjwYNGuCee+7BnXfeWezvjB49GmPGjCly+8SJE9Wc5KGStnEWbs76Asuiz8W+NsNCtl0iIiICMjMzceONNyI1NRWJiYmhCSxkKlQxYsQIXHvttVi2bBmGDx+ODz/8EEOHDi11xkKyHocPHy5xx4L16+djceme1/B31QvRfNj3IdsuBR/RJicno2/fvpw210RsB+tgW1gD26H85Pxds2bNkwYWkcEuO9ulSxe8+OKL6ueOHTti3bp1JQYWMTEx6uJPGjakjet0v5QIuPimsYCQty+VCdvBOtgW1sB2KLvSHregRoXUq1dPdYcYnXXWWdi1axdM51krhMNNiYiIzBNUYCEjQjZt2uRz2z///IPGjRvDbJq+CBlHhRAREZ0agcWDDz6IxYsXq66QLVu2qALMjz/+GMOGWaBYMsIzQRYDCyIiolMjsOjatSumTp2Kb775Bm3btsVzzz2HN998E0OGDIHZuAgZERGR+YIq3hSDBw9WF6suQubkWiFERESmsc1aIewKISIiMp9tAovC4k1mLIiIiMxin8DC0xXCjAUREZF57BNY6PNYgIEFERGRWWwTWLDGgoiIyHz2y1gwsCAiIjKNbQILOJmxICIiMpt9AgsWbxIREZnOfoEF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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3846\n"
     ]
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [],
   "execution_count": null,
   "source": ""
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
